package com.sora.pipeline.domain.dto;

import com.sora.pipeline.domain.InspectionTask;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 巡检任务详细信息DTO
 * 包含线路代码和负责人名称
 * 
 * @author system
 * @since 2025-01-20
 */
@Data
public class InspectionTaskWithDetailsDTO {
    
    /**
     * 任务ID
     */
    private Long id;
    
    /**
     * 任务代码
     */
    private String code;
    
    /**
     * 任务名称
     */
    private String name;
    
    /**
     * 计划ID
     */
    private Long planId;
    
    /**
     * 线路ID
     */
    private Long lineId;
    
    /**
     * 线路代码
     */
    private String lineCode;
    
    /**
     * 线路名称
     */
    private String lineName;
    
    /**
     * 负责人ID
     */
    private Long assigneeId;
    
    /**
     * 负责人姓名
     */
    private String assigneeName;
    
    /**
     * 负责人用户名
     */
    private String assigneeUsername;
    
    /**
     * 巡检周期
     */
    private String cycle;
    
    /**
     * 状态
     */
    private String status;
    
    /**
     * 截止时间
     */
    private LocalDateTime deadline;
    
    /**
     * 开始时间
     */
    private LocalDateTime startTime;
    
    /**
     * 完成时间
     */
    private LocalDateTime completionTime;
    
    /**
     * 备注
     */
    private String remark;
    
    /**
     * 进度
     */
    private Integer progress;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    
    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
    
    /**
     * 是否删除
     */
    private Boolean deleted;
    
    /**
     * 从InspectionTask实体转换
     */
    public static InspectionTaskWithDetailsDTO fromInspectionTask(InspectionTask task) {
        InspectionTaskWithDetailsDTO dto = new InspectionTaskWithDetailsDTO();
        dto.setId(task.getId());
        dto.setCode(task.getCode());
        dto.setName(task.getName());
        dto.setPlanId(task.getPlanId());
        dto.setLineId(task.getLineId());
        dto.setAssigneeId(task.getAssigneeId());
        dto.setCycle(task.getCycle());
        dto.setStatus(task.getStatus());
        dto.setDeadline(task.getDeadline());
        dto.setStartTime(task.getStartTime());
        dto.setCompletionTime(task.getCompletionTime());
        dto.setRemark(task.getRemark());
        dto.setProgress(task.getProgress());
        dto.setCreatedAt(task.getCreatedAt());
        dto.setUpdatedAt(task.getUpdatedAt());
        dto.setDeleted(task.getDeleted());
        return dto;
    }
}
